perm filename LINES.FAI[NEW,LCS]4 blob
sn#355373 filedate 1978-05-12 generic text, type T, neo UTF8
TITLE LINES
ENTRY LINES,EDIT
EXTERNAL .COMM.,ALF,RRJJ,SC,LPEN,MVBEAM,SCANR,UPDWN
EXTERNAL DST,SIZ,PLTR,DPY,AIVECT,AVECT,JCHAR
DEFINE FIXX(N)
< KIFIX N,N ↔ >
KK←2 ↔ L←3 ↔ LE←4 ↔ T←5 ↔ J←1
RL←6 ↔ RJ←7 ↔ B←0 ↔ H←11 ↔ JK←10
HG←12 ↔ D←13 ↔ AL←14 ↔ JJ←15
; SUBROUTINE LINES(A,B,L)
; COMMON/DST/BB,CC
; COMMON /SIZ/RSZ,JCEN,KCEN /FL/IC,NZ,NX,RZ,XGP
; COMMON/DL/IXRX,SAVER,AA /PLTR/IPLT,RHT,DIS
; COMMON R2,JA,CENTR,JB,RJQ(20),JQ(20)
; COMMON/DPY/JJ(4000),WDS(250),MEDIT,IGO
; EQUIVALENCE (ITOP,JJ(3999)),(IBOT,JJ(4000))
; 1,(JJ2,JJ(2))
; DATA BB/.008/,CC/3.5/
;C SET XGP TO 1200.0 FOR MARGIN IN XEROX COPIES
M←2 ↔ N←3 ↔ K←4
LINES: 0 ; GO TO 23
DIST1: JRST L23 ;22 IF(JQ(1).NE.0)GO TO 23
SKIPN .COMM.+=12 ;USE P11 ≠ 0 FOR DISTORTION.
JRST L23 ;P11 IS BB (DIST) P12 IS CC(DST+1)
SKIPE PLTR+=27 ;DST=.005 DST+1=2.2 (IN FILMSS.FAI)
JRST L23 ; IF(CC.EQ.1000)GO TO 23
;;DIST: MOVSI T,212764
;; CAMN T,DST+1 ;** FOR DISTORATION -- SEE ALSO FILLMS ***
;; JRST L23 ; B=B*(CC-BB*ABS(A))
MOVE T,.COMM.+=12
MOVEM T,DST
MOVE T,.COMM.+=13
MOVEM T,DST+1
MOVM T,@(16)
FMPR T,DST ;BB IS DST, CC IS DST+1
FSBR T,DST+1
FMPRM T,@1(16)
MOVNS @1(16)
L23: MOVE M,@(16) ;23 IF(IPLT)GO TO 2
FMPR M,SIZ ; M=A*RSZ
KIFIX M,M ; N=B*RSZ
MOVE N,@1(16)
FMPR N,SIZ
KIFIX N,N ; IF(RSZ.LE.0.8571)GO TO 3
MOVE T,[=0.8571]
CAML T,SIZ
;; JRST L3
JRST L6
SUB M,SIZ+1 ; M=M-JCEN
SUB N,SIZ+2 ; N=N-KCEN
; IF(JA.NE.8)GO TO 5
MOVEI T,10
CAME T,.COMM.+1
JRST L5 ; IF(M.GT.511)M=511
CAMLE M,[=511]
HRRZI M,=511 ; IF(M.LT.-511)M=-511
CAMGE M,[-=511]
HRROI M,-=511 ;5 IF(IABS(M).GT.512)GO TO 77
L5: CAIG M,=512
CAMGE M,[-=512]
JRST L77 ; IF(IABS(N).LT.512)GO TO 4
CAIGE N,=512
CAMG N,[-=512]
CAIA
JRST LL4 ;77 KZ=-1
L77: SETOM KZ# ; RETURN
JRA 16,3(16) ;4 IF(KZ.EQ.0)GO TO 6
LL4: SKIPN KZ
JRST L6 ; KZ=0
SETZM KZ
MOVEM M,MM# ; GO TO 1
MOVEM N,NN#
JRST L1 ;3 IF(JA.EQ.44)GO TO 6
;6 IF(JJ2.GT.3990)RETURN
L6: MOVEI T,7626
CAMGE T,DPY+1
JRA 16,3(16) ; IF(L.EQ.3)GO TO 1
MOVEM M,MM
MOVEM N,NN
HRRZI T,3
CAMN T,@2(16)
JRST L1 ; CALL AVECT(M,N)
JSA 16,AVECT
JUMP MM
JUMP NN ; RETURN
JRA 16,3(16) ;1 CALL AIVECT(M,N)
L1: JSA 16,AIVECT
JUMP MM
JUMP NN ; RETURN
JRA 16,3(16) ;2 IF(IPLT.EQ.-2)RETURN
EDIT: 0 ; 00100 SUBROUTINE EDIT(JJA)
; 00200 COMMON/ALF/INP(72),ML /UPDWN/ RL,UD
; 00300 COMMON /SC/JL,LJ,MK
;00400 1 ,ISKP,XMINUS,N,REXP,LK,NNUM,JM,JN,DBST,NFLG,IXX,ISEMI,QQ
; 00500 1 ,RVX(50),IAMP,A,RRN,B,MODE,IBLA
; 00600 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
; 00700 COMMON/RRJJ/RJJ2,RJJ(20)
;00800 EQUIVALENCE (RVX1,RVX(1)),(RVX2,RVX(2)),(RVX4,RVX(4))
;00900 1,(RVX3,RVX(3)),(RJ6,RJJ(4)),(RJ9,RJJ(7)),(R3,RJQ(1))
;01000 1,(RJ5,RJJ(3)),(RJ10,RJJ(8)),(INP2,INP(2)),(INP20,INP(20))
DEFINE JN<SC+=10> ↔ DEFINE ML <ALF+=72> ↔ DEFINE JA <.COMM.+1>
DEFINE R2<.COMM.> ↔ DEFINE RJJ2<RRJJ> ↔ DEFINE UD <UPDWN+1>
DEFINE RVX1<SC+=16> ↔ DEFINE RVX2<SC+=17> ↔ DEFINE RVX3<SC+=18>
DEFINE RVX4<SC+=19> ↔ DEFINE RJ6<RRJJ+4> ↔ DEFINE RJ5<RRJJ+3>
DEFINE RJ9<RRJJ+=7> ↔ DEFINE RJ10<RRJJ+=8> ↔ DEFINE R3<.COMM.+4>
DEFINE RJ8<RRJJ+=6> ↔ DEFINE RJ7<RRJJ+=5>
DEFINE INP2<ALF+1> ↔ DEFINE INP20<ALF+=19> ↔ DEFINE ISEMI<JCHAR+1>
DEFINE RL<UPDWN> ↔ DEFINE RJJ <RRJJ+1>
SETOM JN ; 01100 JN=-1
MOVE @(16)
MOVEM JJA# ; 01200 C THIS IS FLAG IN SCANR
MOVE 02,ISEMI ; 01300 INP20=ISEMI
MOVEM 02,INP20 ;1400 C SETS LIMIT IN SCANR
MOVEI 02,1 ; 01500 ML=1
MOVEM 02,ML ;1600 RVX2=0
SETZM RVX2 ; 01700 RVX4=0
SETZM RVX4
;01800 C E=EDIT(55), C=COPY(2222), X=EXIT(222), DE=DEL(99), LP=LTPN
; 01900 CALL SCANR
JSA 16,SCANR ; 02000 JN=0
SETZM JN ;2100 R2=RVX2
MOVE 3,RVX2
MOVEM 3,R2 ; 02200 IF(RVX1.GT.10.)GO TO 7
MOVSI 02,204500
CAMGE 02,RVX1
JRST E7 ;2300 JA=0
SETZM JA
SETZ 0, ; FOR E8 ;02400 IF(RVX2.NE.0)GO TO 8
JUMPN 3,E8 ; 02500 IF(INP2.EQ.'P')GO TO 5
MOVE 02,[501004020100]
CAMN 02,INP2
JRST E5 ; 02600 RVX2=RL
MOVE 02,RL ; 02700 IF(RVX1.GT.2)RVX2=UD
MOVSI 202400
CAMGE RVX1
MOVE 02,UD
MOVEM 02,RVX2 ;2800 C STORES RT-LFT OR UP-DOWN INFO
; 02900 GO TO 8
JRST E8 ;3200 C FOR LIGHT PEN MOVING
E7: KIFIX 0,RVX1 ;MOVE RVX1 03300 7 JA=RVX1
MOVEM 00,JA
CAIN =99 ;03400 IF(JA.EQ.99)R2=0
SETZM R2 ; 03500 IF(R2.NE.0)RETURN
SKIPE R2
JRA 16,1(16)
CAIE =55 ;03600 IF(JA.NE.55)RETURN
JRA 16,1(16) ; 03700 5 CALL LPEN(R3,R2,K)
E5: JSA 16,LPEN
JUMP R3
JUMP R2
JUMP 00,2 ; 2 IS A DUMMY HERE
; 03800 C ↑↑↑ K NOT USED!
;03900 CURSOR WILL FIND HORZ POS FOR 55 EDIT.(R3=STF,R2=HORZ) SEE 554 IN MAIN.
MOVE 0,JA ; 04000 IF(JA.EQ.0)CALL EXCH(R2,R3)
JUMPN 0,.+4
MOVE 2,R2
EXCH 2,R3
MOVEM 2,R2 ; 04100 RVX1=2.
MOVSI 02,202400
MOVEM 02,RVX1 ;04200 RVX2=R3-RJJ(1)
MOVE 02,R3
FSBR 02,RJJ
MOVEM 02,RVX2 ;04300 RVX3=3.
MOVSI 02,202600
MOVEM 02,RVX3 ;04400 RJQ(2)=0
SETZM .COMM.+5 ; R4
MOVE 02,R2 ; 04500 RJJ2=R2
MOVEM 02,RJJ2 ;04700 C SO JD WILL BE 0 IN MAIN PROG.
; 04800 C FOR EDIT MODE
E8: CAIN =55 ; 04900 8 IF(JA.EQ.55)RETURN
JRA 16,1(16) ; 05000 IF(INP2.EQ.'P')GO TO 17
MOVE 02,[501004020100]
CAMN 02,INP2
JRST E17 ; 05100 IF(RVX1.GT.2)GO TO 117
MOVSI 02,202400
CAMGE 02,RVX1
JRST E117 ; 05200 RL=RVX2
MOVE 02,RVX2
MOVEM 02,RL
SKIPE 2,RVX4 ; 05300 IF(RVX4.NE.0)UD=RVX4
MOVEM 02,UD ; 05400 GO TO 17
JRST E17 ; 05500 117 IF(RVX4.NE.0)RL=RVX4
E117: MOVE 02,RVX4
JUMPE 02,.+3
MOVE 02,RVX4
MOVEM 02,RL ;05600 UD=RVX2
MOVE 02,RVX2
MOVEM 02,UD ;05700 17 R2=.00001
E17: MOVE 02,[0.00001]
MOVEM 02,R2 ;05800 JA=0
SETZM JA
KIFIX 1,RVX1 ;MOVE 1,RVX1 ; 5900 K=RVX1
MOVE 7,JJA ; KEEP CODE NUM IN AC0
E857: JUMPLE 1,E1 ; IF(K.LE.0)K=1
CAIL 1,5
JRST E2 ; IF(K.GE.5)GO TO 2 -- CATCHES SOME ERRORS.
E855: JRST @E855 (1)
JUMP 00,E1
JUMP 00,E2
JUMP 00,E3
JUMP 00,E4
E4: MOVNS 00,RVX2 ; 06100 4 RVX2=-RVX2
E3: CAIE 7,4
JRST .+5 ; SKIP IF NOT CODE 4
SKIPN RJ6 ;06300 SKIP OVER CLEFS (JJA=3) IS NOW REMOVED. 6/73
SKIPE RJ5 ; 06400 3 CALL MVBEAM(RJJ,0,2,2,RVX2)
SKIPA
JRST E856 ; IGNORE BAR LINES -- IF(R5.EQ.0.AND.R6.EQ.0)GO TO 856
JSA 16,MVBEAM
JUMP RJJ
JUMP [0] ;MVBEAM USES AC0→6
JUMP [2]
JUMP [2]
JUMP RVX2 ;06500C MOVES UP AND DOWN. HANDLES MINIS, ETC.
CAIGE 7,4 ; ; 06600 IF(JJA.LT.4)GO TO 856
JRST E856
CAILE 7,6 ; 06700 IF(JJA.GT.6)GO TO 856
JRST E856 ; 06800C I THINK R2 MUST BE NON-ZERO TO WORK IN EDIT MODE?
MOVSI 02,206620 ;06900 12 IF(RJ5.EQ.50)GO TO 856
CAMN 02,RJ5
JRST E856 ; 07000 C 50=CRESC.-DECRESC.
MOVE 02,RVX2 ;07300 RJ5=RJ5+RVX2
FADRM 02,RJ5 ;07400 C MOVES 5TH PARAM UP OR DOWN
JRST E856 ; 07500 GO TO 856
E1: MOVNS 00,RVX2 ;07600 1 RVX2=-RVX2
E2: MOVE 02,RVX2 ;07700 2 R2=RVX2
MOVEM 02,R2 ;07800 856 IF(RVX4.EQ.0)GO TO 858
E856: MOVE 3,RVX4
JUMPE 3,E858
KIFIX 1,RVX3 ;MOVE 1,RVX3 07900 K=RVX3
MOVEM 3,RVX2 ;08000 RVX2=RVX4
SETZM RVX4 ; 08100 RVX4=0
JRST E857 ; 08200 GO TO 857
E858: MOVE 2,R2 ; 08300 858 IF(R2.EQ..00001)GO TO 7515
CAMN 2,[0.00001]
JRST E7515 ; 1 HAS R2
; 08400 IF(JJA.LT.5)GO TO 477
CAIGE 7,5
JRST E477
CAIG 7,=8 ; 08500 IF(JJA.LE.8)GO TO 5515
JRST E5515
E477: CAIE 7,4 ; 08600 477 IF(JJA.NE.4)GO TO 7515
JRST E7515
SKIPN RJ6 ; 08700 IF(RJ6.EQ.0)GO TO 7515
SKIPE RJ5 ; CHANGED↑↑↑ TO IF(RJ6.EQ.0.AND.RJ5.EQ.0)
SKIPA ;RARE CASES MIGHT BE FOUND! USING P7≠0
JRST E7515 ;08800 C ABOVE FOR P1=6 (BEAMS, SLURS, LINES)
E5515: SKIPE RJ6 ;IF(RJ6.EQ.0)SKIP //GO BACK (UP-DOWN)5515 RJ6=RJ6+R2
FADRM 2,RJ6
CAIN 7,6 ; 09000 IF(JJA.NE.6)GO TO 7515
SKIPN RJ9 ; 09100 IF(RJ9.EQ.0)GO TO 7515
JRST E7515 ; 09200 IF(RJ10.NE.0)GO TO EDX1
MOVE RJ7
JUMPG ERJ8 ;IF(R7. AND. R9.NE.0) MOVE R9
SKIPLE RJ9
JRST E7515-1
ERJ8: SKIPLE RJ8 ;IF(R8.GT.0) MOVE R8
FADRM 2,RJ8 ; IF(RJ8.NE.0)GO TO E7515-1
SKIPLE RJ9 ; IF(RJ7.GE.0))GO TO E7515
FADRM 2,RJ9 ; 09300 RJ9=RJ9+R2
;09400 RJ9(P9) IS LOC. OF INNER NOTE IN BEAM RANGE. SKIPS NUMBERS IN P9.
E7515: FADRM 2,RJJ ;09500 7515 RJJ(1)=R2+RJJ(1)
JRA 16,1(16) ; 09600 END
END